package main;

import java.util.HashSet;

/**
 * @author zhx
 * @since 2020-07-04
 * <p>
 * 给你一个长度为 n 的字符串数组 names 。你将会在文件系统中创建 n 个文件夹：在第 i 分钟，新建名为 names[i] 的文件夹。
 * <p>
 * 由于两个文件 不能 共享相同的文件名，因此如果新建文件夹使用的文件名已经被占用，系统会以 (k) 的形式为新文件夹的文件名添加后缀，其中 k 是能保证文件名唯一的 最小正整数 。
 * <p>
 * 返回长度为 n 的字符串数组，其中 ans[i] 是创建第 i 个文件夹时系统分配给该文件夹的实际名称。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/making-file-names-unique
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 * </p>
 * 超时
 */
public class LeetCode18 {
    public String[] getFolderNames(String[] names) {
        //List<String> ansList = new ArrayList<>();
        String[] ans = new String[names.length];
        HashSet<String> hashSet = new HashSet<>();
        for (int i = 0; i < names.length; i++) {
            if (hashSet.contains(names[i])) {
                int k = 1;
                while (hashSet.contains(names[i] + "(" + k + ")")) {
                    k++;
                }
                //ansList.add(names[i] + "(" + k + ")");
                ans[i] = names[i] + "(" + k + ")";
                hashSet.add(names[i] + "(" + k + ")");
            } else {
                //ansList.add(names[i]);
                ans[i] = names[i];
                hashSet.add(names[i]);
            }
        }
        //ansList.toArray(ans);
        return ans;
    }
}
